package link.service;

import android.content.Intent;
import android.view.View;
import link.ui.uc.LoginActivity;
import org.an.ku.util.StringUtil;
import org.an.proj.contacts.MyApplication;
import org.an.proj.contacts.config.Config;
import org.an.proj.contacts.config.LogUtil;
import org.an.proj.contacts.model.response.Result;
import org.an.proj.contacts.ui.DialogActivity;
import org.an.proj.contacts.util.ConstantUtil;

/**
 * 创建时间：2016年11月04日15:51 <br>
 * 作者：fuchaoyang <br>
 * 描述：
 */

public class LogoutUtil {

  public static <T> void check(T entity) {
    if (entity != null && entity instanceof Result) {
      Result resultInfo = (Result) entity;
      if (resultInfo.errno != 0) {
        //接口返回错误信息
        if (LogoutUtil.isAuthFail(resultInfo.errno)) { // 被登出
          LogoutUtil.logout(resultInfo.error);
        } else if (resultInfo.errno == ConstantUtil.IErrorCode.errorCodeNewVersion) { // 小流量
          // fixme 为了方便，小流量也走普通升级逻辑
          LogoutUtil.logout(resultInfo.error);
        }
        LogUtil.e(Config.TAG_LOG, StringUtil.trim(resultInfo.error));
      }
    }
  }

  /**
   * TOKEN验证失败
   */

  public static boolean isAuthFail(int errno) {
    return errno == ConstantUtil.IErrorCode.errorCodeUnLogin ||
        errno == ConstantUtil.IErrorCode.errorCodeTokenFail ||
        errno == ConstantUtil.IErrorCode.errorCodeTokenExpire;
  }

  /**
   * 登出
   *
   * @param error 错误信息
   */
  public static void logout(String error) {
    new DialogActivity.DialogActivityConfig().setPositiveButton("我知道了",
        new DialogActivity.OnClickListener() {
          @Override public void onClick(View v) {
            Intent intent = new Intent(MyApplication.getInstance(), LoginActivity.class);
            intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
            MyApplication.getInstance().startActivity(intent);
          }
        }).setCloseable(false).setContent(error).show();
  }
}
